Internet Protocol (IP) networks allow a collection of computers and other devices to be communicatively coupled to each other using a private address space. Internet Protocol networks utilize the Internet to facilitate the sharing of resources amongst devices. In order to enable communication between devices within private and public networks, Network Address Translation (NAT) may be employed to translate between addresses in the private address space and addresses in the public address space.
Web Real-Time Communication (WebRTC) is an example of an IP application that includes real-time communication features such as voice and video chatting among web browser. In order to discover and traverse NAT, current WebRTC architecture requires the web browsers to implement certain Interactive Connectivity Establishment (ICE) network protocols and techniques such as Session Traversal Utilities for NAT (STUN) and Traversal Using Relays around NAT (TURN). STUN may allow a client to determine whether it is operating behind a NAT and to discover its public IP address that is allocated for User Datagram Protocol (UDP) connections to a remote host. Additionally, TURN may be an extension of STUN and may utilize intermediate nodes to serve as relays to allow communication between peers.
These protocols, however, may be inefficient in properly monitoring NAT behavior as they may not be supported by some networks, resulting in communication failures. For example, some firewalls may block STUN and UDP traffic for clients such as Skype and Google Talk. Additionally, the network protocols may not reuse web traffic generated by a browser for NAT discovery, thereby creating excess networking overhead. The dedicated STUN/TURN servers may be single points of failure, and it may be difficult to extend them to support other NAT discovery mechanisms (e.g., a P2P rendezvous). Furthermore, the protocols introduce a connectivity layer that may not follow the web architecture, in which the STUN and TURN servers do not return hypertext even though they can be identified by URI schemes. Thus, there is a need for NAT discovery mechanisms that address one or more of the aforementioned issues within the Web architecture.